當我們深入了解 React 的渲染機制時,我們等於又掌握了這個 React 的另一個核心概念,它不僅讓我們的應用更快更順暢,還讓我們的開發更有效率。React 的虛擬 DOM、生命週期、事件處理等概念,直接影響了性能、代碼結構和使用者的體驗。這種深入理解讓我們能夠更好地優化應用,提高程式碼的品質,並提供出色的使用者體驗。無論您是新手還是有經驗的開發者,React 渲染機制都是值得投入時間學習的重要主題,它將使你成為一名更優秀的 React 開發者。
Component Life Cycle(元件生命週期):
React 元件生命週期是指元件在被創建、更新和卸載時所經歷的一系列階段。這些階段包括 componentDidMount
、componentDidUpdate
、componentWillUnmount
等等。這些方法允許您在特定的階段執行程式碼,例如在元件被加載後或更新後。
以 Class Component 為範例:
import React, { Component } from 'react';
class MyComponent extends Component {
componentDidMount() {
// 元件被加載後執行的程式碼
}
componentDidUpdate(prevProps, prevState) {
// 元件更新後執行的程式碼
}
componentWillUnmount() {
// 元件即將卸載前執行的程式碼
}
render() {
return <div>我的React元件</div>;
}
}
以 Functional Component 為範例:
import React, { useEffect } from 'react';
const MyComponent = () => {
useEffect(() => {
// 元件被加載後執行的程式碼
return () => {
// 元件即將卸載前執行的程式碼
};
}, []);
return <div>我的React元件</div>;
}
Lists and Keys:
在 React 中,您可以使用 JavaScript map function 來動態生成清單,並確保每個項目都有唯一的 key。這有助於 React 正確地識別和更新清單中的元素。
import React from 'react';
const MyList = () => {
const items = ['項目1', '項目2', '項目3'];
return (
<div>
{items.map((item, index) => (
<div key={index}>{item}</div>
))}
</div>
);
}
Render Props:
渲染屬性是一種在 React 中共享程式碼的技巧,通過將一個函式作為元件的屬性,其他元件可以調用這個函式,並獲取需要的資料或邏輯。
import React from 'react';
const MouseTracker = ({ render }) => {
return (
<div onMouseMove={(event) => render(event)}>
追蹤滑鼠位置
</div>
);
}
// 在其他地方使用 Render Props
const App = () => {
return (
<MouseTracker
render={(event) => (
<div>滑鼠位置:{event.clientX}, {event.clientY}</div>
)}
/>
);
}
Refs:
Refs 允許你在 React 元件中直接訪問 DOM 元素或 React 元件實例。這在需要操控 DOM 或從子元件中訪問方法的情況下非常有用。
import React, { useRef, useEffect } from 'react';
const MyComponent = () => {
const inputRef = useRef(null);
useEffect(() => {
// 存取 DOM 元素
inputRef.current.focus();
}, []);
return <input ref={inputRef} />;
}
Events:
在 React 中,你可以使用事件處理函式來處理各種 DOM 事件,例如點擊、改變、提交等等。
import React from 'react';
const MyComponent = () => {
function handleClick() {
alert('按下了按鈕');
}
return <button onClick={handleClick}>點擊我</button>;
}
Higher Order Components:
高階元件是一種模式,它允許你重用元件邏輯並增強現有元件的功能。通過將一個元件傳遞給高階元件,你可以添加額外的行為或屬性。
import React, { useEffect } from 'react';
// 高階元件示例
const withLogging = (WrappedComponent) => {
return function EnhancedComponent(props) {
useEffect(() => {
console.log('元件已加載');
}, []);
return <WrappedComponent {...props} />;
};
}
// 使用高階元件
const MyComponent = () => {
return <div>我的React元件</div>;
}
const EnhancedComponent = withLogging(MyComponent);